Various error conditions can be encountered when using storage resources. For example, in a system that uses a disk to store file system data, an error condition (e.g., an error condition corresponding to low disk space) will be encountered if the amount of disk space occupied by the file system data exceeds a threshold amount. This error condition is typically handled by allocating more disk space, if available, to the file system. Similarly, an error condition can be encountered if a storage device experiences a failure, rendering any application data stored on that storage device unavailable. This error condition can be handled by restoring the data from a backup copy or mirror.
Another example of an error condition occurs in systems that provide multipathed access to a storage device. Multipathed access is available when there are multiple paths via which an application can access a storage device. The paths can be controlled in an active/passive configuration (i.e., a configuration in which one path (or set of paths) is active while the other path(s) are passive). If the path (referred to as the active path) that is currently being used to access the storage device fails, an error condition is generated. This error condition is handled by selecting another path by which the storage device can be accessed.
A problem encountered in the scenarios above involves the situation in which multiple applications are able to use the same storage resources. In these situations, the handling of an error condition may not necessarily be beneficial to all of the applications. For example, if two or more computing devices (each of which executes one or more applications) are able to access an active/passive multipathed array, one of the computing devices may experience a path failure on the active path. In response to the path failure, a new active path will be selected. Typically, the new active path will be selected so as to maintain connectivity with the multipathed array for the majority of the computing devices. However, some of the computing devices may not be able to access the multipathed array via the newly-selected active path. Accordingly, the selection of the new active path can result in the loss of connectivity for some computing devices. Furthermore, if the computing devices that lose connectivity are executing applications that are critical to the operation of a business, such a loss of connectivity can have disastrous effects. Thus, it is desirable to provide improved techniques for handling error conditions of this kind.